//package com.lianxi.aop;
//
//import com.lianxi.util.IpUtil;
//import org.aspectj.lang.JoinPoint;
//import org.aspectj.lang.annotation.Aspect;
//import org.aspectj.lang.annotation.Before;
//import org.springframework.stereotype.Component;
//
//import javax.servlet.http.HttpServletRequest;
//import java.util.Arrays;
//import java.util.List;
//
///**
// * ssm aop步骤
// * 1.引入依赖
// * <dependency>
// *  <groupId>org.springframework</groupId>
// *  <artifactId>spring-aspects</artifactId>
// *  <version>5.3.1</version>
// * </dependency>
// *
// * 2.spring配置文件中配置
// *
// *      基于注解的AOP的实现：
// *          1、将目标对象和切面交给IOC容器管理（注解+扫描）
// *          2、开启AspectJ的自动代理，为目标对象自动生成代理
// *          3、将切面类通过注解@Aspect标识
// *
// * <context:component-scan base-package="com.atguigu.aop.annotation"></context:component-scan>
// * <aop:aspectj-autoproxy />
// *
// * 3.写切面，通知
// */
//
//@Aspect
//@Component  //通知会被执行两次，原因spring在扫描的时候扫描了两次
//public class HelloAspect {
//
//    //为什么也能够注意  因为在spring初始化这个bean的时候 会使用这个全参的构造方法，因此会实例化一个hellocontrollear放入HelloAspect当中
//    private final HelloController helloController;
//
//    public HelloAspect(HelloController helloController) {
//        this.helloController = helloController;
//    }
//
//
//    @Before("execution(* com.lianxi.rocketmqmvc.HelloController.*(..))")
//    public void beforeAdviceMethod(JoinPoint joinPoint) {
//        System.out.println("****aop前置通知开启2****");
//        System.out.println("类名+方法名："+joinPoint);
//        //获取连接点的签名信息
//        String methodName = joinPoint.getSignature().getName();
//        //获取目标方法到的实参信息
//        String args = Arrays.toString(joinPoint.getArgs());
//
//        List<Object> objects = Arrays.asList(joinPoint.getArgs());
////        HttpServletRequest request = (HttpServletRequest) objects.get(1);
//
////        System.out.println(IpUtil.getIpAddr(request));
////        System.out.println(IpUtil.getRequestBrowserInfo(request));
////        System.out.println(IpUtil.getRequestSystemInfo(request));
//
//
////        HttpServletRequest request = (HttpServletRequest) joinPoint.getArgs()[1];
////        String ipAddr = IpUtil.getIpAddr(request);
////        System.out.println("Logger-->前置通知，方法名：" + methodName + "，参数：" + args+" 访问地址："+ipAddr);
//
//
//        System.out.println("**************before通知方法结束************************");
//    }
//
//}
